//
//  PostMessageSendingTokenIssueRequest.swift
//
//  Copyright (c) 2016-present, LY Corporation. All rights reserved.
//
//  You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
//  copy and distribute this software in source code or binary form for use
//  in connection with the web services and APIs provided by LY Corporation.
//
//  As with any software that integrates with the LY Corporation platform, your use of this software
//  is subject to the LINE Developers Agreement [http://terms2.line.me/LINE_Developers_Agreement].
//  This copyright notice shall be included in all copies or substantial portions of the software.
//
//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
//  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
//  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
//  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//

import Foundation

/// LINE internal use only.
/// Represents a request for issuing a one time token for sharing messages.
///
/// `LoginPermission.oneTimeShare` is required.
///
public struct PostMessageSendingTokenIssueRequest: Request {

    public typealias Response = MessageSendingToken

    public let userIDs: [String]

    public init(userIDs: [String]) {
        self.userIDs = userIDs
    }

    public let method: HTTPMethod = .post
    public let path = "/message/v3/ott/issue"
    public let authentication: AuthenticateMethod = .token

    public var parameters: [String: Any]? {
        return [
            "userIds": userIDs
        ]
    }
}

public struct MessageSendingToken: Codable {

    public let token: String

    public init(value: String) {
        self.token = value
    }
}
